bitkeeper revision 1.210.1.1 (3eba19d1IIr1Ohw82oc2IN-kKV0kfw)
authortlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk>
Thu, 8 May 2003 08:48:17 +0000 (08:48 +0000)
committertlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk>
Thu, 8 May 2003 08:48:17 +0000 (08:48 +0000)
Allow blank network options, fix spacing around -a in CommandNew

tools/domctl/domctl
tools/domctl/domctl.xml
tools/domctl/src/uk/ac/cam/cl/xeno/domctl/CommandNew.java
tools/domctl/src/uk/ac/cam/cl/xeno/domctl/Defaults.java

index 3f80d2117658b662e5a2ca39a974b4e520656ab2..9383512f2dd8e8718a58bf03e879eb394046659a 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash -x
+#!/bin/bash 
 
 if [ -z "$DEFAULTS_FILE" ] ; then DEFAULTS_FILE=domctl.xml ; fi
 if [ -z "$DEFAULTS_PATH" ] ; then DEFAULTS_PATH=.:/etc ; fi
@@ -7,25 +7,27 @@ if [ -z "$IFCONFIG" ] ; then IFCONFIG=/sbin/ifconfig ; fi
 if [ -z "$ROUTE" ] ; then ROUTE=/sbin/route ; fi
 if [ -z "$JAVA" ] ; then JAVA=java ; fi
 
-if [ ! -x "$IFCONFIG" ]; then
-  echo Could not find executable $IFCONFIG
-  exit 1
+if [ "$1" = "new" ] ; then
+  if [ ! -x "$IFCONFIG" ]; then  
+    echo Could not find executable $IFCONFIG
+    exit 1
+  fi
+
+  if [ ! -x "$ROUTE" ]; then
+    echo Could not find executable $ROUTE
+    exit 1
+  fi
+
+  # Try to determine dom0 network settings to avoid hard-coding
+  # particular machines in the defaults file
+  LOCAL_IP=$(/sbin/ifconfig $QUERY_DEV | grep 'inet addr' | tr ':' '\t' | awk '{print $3}')
+  LOCAL_MASK=$(/sbin/ifconfig $QUERY_DEV | grep 'Mask' | tr ':' '\t' | awk '{print $7}')
+  LOCAL_ROUTE=$(/sbin/route -n | grep $QUERY_DEV | grep 'G' | awk '{print $2}')
 fi
 
-if [ ! -x "$ROUTE" ]; then
-  echo Could not find executable $ROUTE
-  exit 1
-fi
-
-# Try to determine dom0 network settings to avoid hard-coding
-# particular machines in the defaults file
-LOCAL_IP=$(/sbin/ifconfig $QUERY_DEV | grep 'inet addr' | tr ':' '\t' | awk '{print $3}')
-LOCAL_MASK=$(/sbin/ifconfig $QUERY_DEV | grep 'Mask' | tr ':' '\t' | awk '{print $7}')
-LOCAL_ROUTE=$(/sbin/route -n | grep $QUERY_DEV | grep 'G' | awk '{print $2}')
-
 
 #ARGS="-DTEST -DDEFAULTS_FILE=$DEFAULTS_FILE -DDEFAULTS_PATH=$DEFAULTS_PATH -DLOCAL_IP=$LOCAL_IP -DLOCAL_MASK=$LOCAL_MASK -DLOCAL_ROUTE=$LOCAL_ROUTE"
 ARGS="-DDEFAULTS_FILE=$DEFAULTS_FILE -DDEFAULTS_PATH=$DEFAULTS_PATH -DLOCAL_IP=$LOCAL_IP -DLOCAL_MASK=$LOCAL_MASK -DLOCAL_ROUTE=$LOCAL_ROUTE"
 
 
-$JAVA $ARGS -jar domctl.jar $*
+$JAVA $ARGS -jar $(dirname $0)/domctl.jar $*
index 168b8da2fa9900b51aae8ad7f9d84977062090c8..bfca3cf549380ce3cd90e6bd180259b98ce8a11e 100644 (file)
@@ -10,6 +10,6 @@
 <nw_mask>=</nw_mask>
 <nw_nfs_server>128.232.32.20</nw_nfs_server>
 <nw_nfs_root>/usr/groups/srgboot/moonraider/roots/root+</nw_nfs_root>
-<max_domain_number>2</max_domain_number>
+<max_domain_number>10</max_domain_number>
 <xi_tools_dir>/tools/internal/</xi_tools_dir>
 </domctl_defaults>
index 1dd915686ed709db84dfaeae8c63069829664582..ca051fb16c668b0f6dd9f1637784b861aa7a4f58 100644 (file)
@@ -13,7 +13,7 @@ public class CommandNew extends Command
     String image = getStringParameter(args, 'i', d.domainImage);
     String initrd = getStringParameter (args, 'r', d.domainInitRD);
     int vifs = getIntParameter(args, 'v', d.domainVIFs);
-    String bargs = getStringParameter (args, 'a', "");
+    String bargs = getStringParameter (args, 'a', "") + " ";
     String root_dev = getStringParameter (args, 'd', d.rootDevice);
     String nfs_root_path = getStringParameter (args, 'f', d.NWNFSRoot);
     String nw_ip = getStringParameter (args, '4', d.NWIP);
@@ -23,11 +23,12 @@ public class CommandNew extends Command
     String nw_host = getStringParameter (args, 'h', d.NWHost);
     String domain_ip = "";
     int rc = 0;
-    int domain_id;
+    int domain_id = -1;
     DataInputStream dis;
     int idx;
     int i;
 
+    d.describe ();
 
     try
       {
@@ -60,20 +61,25 @@ public class CommandNew extends Command
          return reportError ("Cannot configure more than " + 
                              d.MaxDomainNumber + " domains");
        }
-       
-       /* Set up boot parameters to pass to xi_build. */
-       bargs = "";
 
+       /* Set up boot parameters to pass to xi_build. */
        if (root_dev.equals ("/dev/nfs")) {
          if (vifs == 0) {
            return reportError ("Cannot use NFS root without VIFs configured");
          }
+         if (nfs_root_path == null) {
+           return reportError ("No NFS root specified");
+         }
+         if (nw_nfs_server == null) {
+           return reportError ("No NFS server specified");
+         }
          bargs = (bargs + 
                   "root=/dev/nfs " +
                   "nfsroot=" + StringPattern.parse(nfs_root_path).resolve(domain_id) +
                   " ");
        } else {
-         bargs = ("root=" + StringPattern.parse(root_dev).resolve(domain_id) +
+         bargs = (bargs + 
+                  "root=" + StringPattern.parse(root_dev).resolve(domain_id) +
                   " ");
 
        }
@@ -89,10 +95,10 @@ public class CommandNew extends Command
            
          }
          bargs = ("ip=" + domain_ip +
-                  ":" + InetAddressPattern.parse(nw_nfs_server).resolve(domain_id) +
-                  ":" + InetAddressPattern.parse(nw_gw).resolve(domain_id) + 
-                  ":" + InetAddressPattern.parse(nw_mask).resolve(domain_id) +
-                  ":" + nw_host + 
+                  ":" + ((nw_nfs_server == null) ? "" : (InetAddressPattern.parse(nw_nfs_server).resolve(domain_id))) +
+                  ":" + ((nw_gw == null) ? "" : (InetAddressPattern.parse(nw_gw).resolve(domain_id))) + 
+                  ":" + ((nw_mask == null) ? "" : InetAddressPattern.parse(nw_mask).resolve(domain_id)) +
+                  ":" + ((nw_host == null) ? "" : nw_host) + 
                   ":eth0:off " + bargs);
        }
        
@@ -152,6 +158,10 @@ public class CommandNew extends Command
        rc = -1;
       }
 
+    if (rc == 0) {
+      System.out.println ("Created domain " + domain_id);
+    }
+
     return rc;
   }
 
index bacce11a952354b98e0a01fd53e5b087892cbde0..6019cd150ff482216e309682503289b3eda959d2 100644 (file)
@@ -24,7 +24,7 @@ public class Defaults
   String NWNFSServer;
   String NWNFSRoot;
 
-  int MaxDomainNumber;
+  int MaxDomainNumber = Integer.MAX_VALUE;
 
   String XIToolsDir;
 
@@ -33,7 +33,6 @@ public class Defaults
   public Defaults ()
   {
     File f = Settings.getDefaultsFile ();
-    System.out.println ("f=" + f);
 
     try
       {
@@ -50,21 +49,23 @@ public class Defaults
        e.printStackTrace();
        System.exit(1);
       }
+  }
 
+  public void describe () {
     System.out.println ("Domain defaults:");
-    System.out.println ("   name        " + domainName);
-    System.out.println ("   size        " + domainSizeKB);
-    System.out.println ("   vifs        " + domainVIFs);
-    System.out.println ("   domainImage " + domainImage);
-    System.out.println ("   domainInitRD " + domainInitRD);
-    System.out.println ("   rootDevice " + rootDevice);
-    System.out.println ("   NWIP " + NWIP);
-    System.out.println ("   NWGW " + NWGW);
-    System.out.println ("   NWMask " + NWMask);
+    System.out.println ("   name            " + domainName);
+    System.out.println ("   size            " + domainSizeKB);
+    System.out.println ("   vifs            " + domainVIFs);
+    System.out.println ("   domainImage     " + domainImage);
+    System.out.println ("   domainInitRD    " + domainInitRD);
+    System.out.println ("   rootDevice      " + rootDevice);
+    System.out.println ("   NWIP            " + NWIP);
+    System.out.println ("   NWGW            " + NWGW);
+    System.out.println ("   NWMask          " + NWMask);
     System.out.println ("   MaxDomainNumber " + MaxDomainNumber);
-    System.out.println ("   NWNFSServer " + NWNFSServer);
-    System.out.println ("   NWNFSRoot " + NWNFSRoot);
-    System.out.println ("   XIToolsDir " + XIToolsDir);
+    System.out.println ("   NWNFSServer     " + NWNFSServer);
+    System.out.println ("   NWNFSRoot       " + NWNFSRoot);
+    System.out.println ("   XIToolsDir      " + XIToolsDir);
   }
 
   /***********************************************************************/